﻿using System;
using System.Collections;
using Gp.Scripts.Core;

namespace Gp.Scripts.Core {

    public interface IAbility {
        public BaseUnit UnitReference { get; }
        
        public void Display();
        public void CleanUp();

        public void OnAbilitySelected();
        public void OnAbilityDeselected();
    }
    
    
    public abstract class Ability : IAbility {
        public BaseUnit UnitReference { get; protected set; }


        public virtual IEnumerator Act(SkillContext context) {
            yield return 0;
        }


        public virtual void Display() { }
        public virtual void CleanUp() { }

        public virtual void OnAbilitySelected() { }
        public virtual void OnAbilityDeselected() { }
    }
}